package com.wbt.huawei.main0529;

/**
 *
 * * MyCircularQueue(k): 构造器，设置队列长度为 k 。
 *  * Front: 从队首获取元素。如果队列为空，返回 -1 。
 *  * Rear: 获取队尾元素。如果队列为空，返回 -1 。
 *  * enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。
 *  * deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。
 *  * 示例：
 *  * MyCircularQueue circularQueue = new MyCircularQueue(3); // 设置长度为 3
 *  * circularQueue.enQueue(1);  // 返回 true
 *  * circularQueue.enQueue(2);  // 返回 true
 *  * circularQueue.enQueue(3);  // 返回 true
 *  * circularQueue.enQueue(4);  // 返回 false，队列已满
 *  * circularQueue.Rear();       // 返回 3
 *  * circularQueue.deQueue();   // 返回 true
 *  * circularQueue.enQueue(4);  // 返回 true
 *  * circularQueue.Rear();       // 返回 4
 *
 */
public class MyCircularQueue<T> {


    private int tools = 10;
    private int dataSize = 0;

    Object[] data;
    private int start = 0;
    private int end = 0;

    MyCircularQueue(){
        data = new Object[tools];
    }
    MyCircularQueue(int size){
        tools = size;
        data = new Object[size];
    }

    public boolean enQueue(T vla){

        if (dataSize < tools) {
            dataSize ++;
            if(end == tools -1){
                end++;
            }

            data[end] = vla;
            return true;
        }else
            return false;
    }
}
